package com.myapp.hibernate.model;
// Generated 25-jun-2013 13:42:51 by Hibernate Tools 3.2.1.GA

import com.myapp.hibernate.util.ApuestaUtil;
import com.myapp.hibernate.util.BoxeadorUtil;
import com.myapp.hibernate.util.CombateUtil;
import java.util.Date;
import java.util.Properties;
import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;

/**
 * Apuesta generated by hbm2java
 */
public class Apuesta implements java.io.Serializable {

    private Integer idApuesta;
    private int idUsuario;
    private int cantidad;
    private Date fechaApuesta;
    private int idBoxeador;
    private int idCombate;
    private float cuota;

    public Apuesta() {
    }

    public Apuesta(int idUsuario, int cantidad, Date fechaApuesta, int idBoxeador, int idCombate, float cuota) {
        this.idUsuario = idUsuario;
        this.cantidad = cantidad;
        this.fechaApuesta = fechaApuesta;
        this.idBoxeador = idBoxeador;
        this.idCombate = idCombate;
        this.cuota = cuota;
    }

    public Integer getIdApuesta() {
        return this.idApuesta;
    }

    public void setIdApuesta(Integer idApuesta) {
        this.idApuesta = idApuesta;
    }

    public int getIdUsuario() {
        return this.idUsuario;
    }

    public void setIdUsuario(int idUsuario) {
        this.idUsuario = idUsuario;
    }

    public int getCantidad() {
        return this.cantidad;
    }

    public void setCantidad(int cantidad) {
        this.cantidad = cantidad;
    }

    public Date getFechaApuesta() {
        return this.fechaApuesta;
    }

    public void setFechaApuesta(Date fechaApuesta) {
        this.fechaApuesta = fechaApuesta;
    }

    public int getIdBoxeador() {
        return this.idBoxeador;
    }

    public void setIdBoxeador(int idBoxeador) {
        this.idBoxeador = idBoxeador;
    }

    public int getIdCombate() {
        return this.idCombate;
    }

    public void setIdCombate(int idCombate) {
        this.idCombate = idCombate;
    }

    public float getCuota() {
        return this.cuota;
    }

    public void setCuota(float cuota) {
        this.cuota = cuota;
    }

    public void enviaEmail(Usuario usuario) throws MessagingException {
        // Propiedades de la conexión
        Properties props = new Properties();
        props.setProperty("mail.smtp.host", "smtp.gmail.com");
        props.setProperty("mail.smtp.starttls.enable", "true");
        props.setProperty("mail.smtp.port", "587");
        props.setProperty("mail.smtp.user", "betboxingupo@gmail.com");
        props.setProperty("mail.smtp.auth", "true");

        // Preparamos la sesion
        Session session = Session.getDefaultInstance(props);

        // Construimos el mensaje que se va a mandar
        BoxeadorUtil boxeadorUtil = new BoxeadorUtil();
        ApuestaUtil apuestaUtil = new ApuestaUtil();
        CombateUtil combateUtil = new CombateUtil();
        Apuesta a = apuestaUtil.obtenerApuesta(this.getIdApuesta());
        Combate c = combateUtil.obtenerCombatedeApuesta(a);
        String mensaje = "";
        mensaje += "Hola! " + usuario.getNombre() + " " + usuario.getApellidos() + " <br /><br /> le informamos que su apuesta se ha realizado correctamente"
                + ". Los datos son los siguientes:<br /><br />";
        mensaje += "<center><table border='1'>";
        mensaje += "<tr><th>Combate</th><td>" + boxeadorUtil.obtenerBoxeador(c.getIdBoxeador1()).getNombre()
                +" "+boxeadorUtil.obtenerBoxeador(c.getIdBoxeador1()).getApellidos()+" VS "
                +boxeadorUtil.obtenerBoxeador(c.getIdBoxeador2()).getNombre()+" "+boxeadorUtil.obtenerBoxeador(c.getIdBoxeador2()).getApellidos()+ "</td></tr>";
        mensaje += "<tr><th>Boxeador</th><td>" + boxeadorUtil.obtenerBoxeadordeApuesta(this.getIdBoxeador()).getNombre() + " " + boxeadorUtil.obtenerBoxeadordeApuesta(this.getIdBoxeador()).getApellidos() + "</td></tr>";
        mensaje += "<tr><th>Fecha del combate</th><td>" + c.getFecha() + "</td></tr>";
        mensaje += "<tr><th>Fecha de la apuesta</th><td>" + this.getFechaApuesta() + "</td></tr>";
        mensaje += "<tr><th>Cantidad</th><td>" + this.getCantidad() + "</td></tr>";
        mensaje += "<tr><th>Cuota</th><td>" + this.getCuota() + "</td></tr>";
        mensaje += "</table></center>";
        mensaje += "<br /><br />&iexcl;Muchas gracias por realizar la apuesta en nuestra aplicacion&excl;<br /><br /><br />";
        mensaje += "Mensaje enviado autom&aacute;ticamente, no conteste. <br/>";

        MimeMessage message = new MimeMessage(session);
        // Asunto del mensaje
        message.setSubject("Apuesta realizada en BetBoxing");
        // Emisor del mensaje        
        message.setFrom(new InternetAddress("betboxingupo@gmail.com"));
        message.setContent(mensaje, "text/html");
        // Receptor del mensaje, a quien se le va a enviar
        message.addRecipient(Message.RecipientType.TO, new InternetAddress(usuario.getEmail()));

        // Envia correo
        Transport t = session.getTransport("smtp");
        // t.connect( direccion de correo, contraseña)
        t.connect("betboxingupo@gmail.com", "grupo05it");
        t.sendMessage(message, message.getAllRecipients());

        // Cierre.
        t.close();
    }
}
